#include<stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include<string.h>

/*
 *
程序执行一次，发送三个消息，消息类型分别是1、2、3
 */

typedef struct{
	long msg_type;
	char buf[128];
}msgT;

#define MSGLEN (sizeof(msgT)-sizeof(long))

int main(){
	int msgid;
	key_t key;
	msgT msg;
	int ret;

	//创建key
	key = ftok(".", 100);
	if(key < 0){
		perror("ftok");
		return 0;
	}

	//创建消息队列
	msgid = msgget(key, IPC_CREAT|0666);
	if(msgid < 0){
		perror("msgget");
		return 0;
	}

	//构造消息1
	msg.msg_type = 1;
	strcpy(msg.buf, "this msg type 1");

	//发送消息1
	ret = msgsnd(msgid, &msg, MSGLEN, 0);
	if(ret < 0){
		perror("msgsnd");
		return 0;
	}
	
	//构造消息2
	msg.msg_type = 2;
	strcpy(msg.buf, "this msg type 2");

	//发送消息2
	ret = msgsnd(msgid, &msg, MSGLEN, 0);
	if(ret < 0){
		perror("msgsnd");
		return 0;
	}
	
	//构造消息3
	msg.msg_type = 3;
	strcpy(msg.buf, "this msg type 3");

	//发送消息3
	ret = msgsnd(msgid, &msg, MSGLEN, 0);
	if(ret < 0){
		perror("msgsnd");
		return 0;
	}
}

